<?php
/* *
 * 功能：支付宝服务器异步通知页面
 * 版本：3.2
 * 日期：2011-03-25
 * 说明：
 * 以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 * 该代码仅供学习和研究支付宝接口使用，只是提供一个参考。

 *************************页面功能说明*************************
 * 创建该页面文件时，请留心该页面文件中无任何HTML代码及空格。
 * 该页面不能在本机电脑测试，请到服务器上做测试。请确保外部可以访问该页面。
 * 该页面调试工具请使用写文本函数logResult，该函数已被默认关闭，见alipay_notify_class.php中的函数verifyNotify
 * 如果没有收到该页面返回的 success 信息，支付宝会在24小时内按一定的时间策略重发通知
 
 * TRADE_FINISHED(表示交易已经成功结束，并不能再对该交易做后续操作);
 * TRADE_SUCCESS(表示交易已经成功结束，可以对该交易做后续操作，如：分润、退款等);
 */
require 'global.php';
// 支付方式API信息, payment API info
$api_payment=$payment_method->get_row(1);
define('API_PAY_USERNAME', $api_payment['api_username']);
define('API_PAY_PASSWORD', $api_payment['api_password']);
define('API_PAY_KEY', $api_payment['api_key']);
define('API_PAY_ACCOUNT', $api_payment['account_no']);

require_once(ROOT."common/alipay/alipay.config.php");
require_once(ROOT."common/alipay/alipay_notify.class.php");
// 电邮相关 email
include(ROOT."common/mail_send.php");
$email_template=new DB(Temail_template,$conn);

$sales_order=new DB(Tsales_order,$conn);

//计算得出通知验证结果
$alipayNotify = new AlipayNotify($aliapy_config);
$verify_result = $alipayNotify->verifyNotify();

if($verify_result) {//验证成功
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
	//请在这里加上商户的业务逻辑程序代
	
	//——请根据您的业务逻辑来编写程序（以下代码仅作参考）——
    //获取支付宝的通知返回参数，可参考技术文档中服务器异步通知参数列表
    $out_trade_no	= $_POST['out_trade_no'];	    //获取订单号
    $trade_no		= $_POST['trade_no'];	    	//获取支付宝交易号
    $total_fee		= $_POST['total_fee'];			//获取总价格
	$payer = $_POST['buyer_email']; 
    $ordertype		= $_POST['extra_common_param'];	// extra_common_param
	
	$errortodavee='';
    if($_POST['trade_status'] == 'TRADE_FINISHED' || $_POST['trade_status'] == 'TRADE_SUCCESS') {
		//判断该笔订单是否在商户网站中已经做过处理
			//如果没有做过处理，根据订单号（out_trade_no）在商户网站的订单系统中查到该笔订单的详细，并执行商户的业务程序
			//如果有做过处理，不执行商户的业务程序
    	$order=$sales_order->get_row($out_trade_no,'ref_no');

		if($order['order_status']==1){

			$arr=array(
				'payer'=>$payer,
				'payment_ref_no'=>$trade_no,
				'paid_time'=>date('Y-m-d H:i:s'),
				'order_status'=>2,
			);

			if(! $sales_order->update($arr, 'ref_no', $out_trade_no)){
				$errortodavee=mysql_error();
			}
            $customer_id=$order['customer_id'];
            // 加积分 add point
            $customer->add_point_by_order($out_trade_no);
            // 更新级别
			$customer->update_grade($customer_id);


			// //发电邮 send email
			// $ref_no=$out_trade_no;
			// $order=$sales_order->get_row($ref_no,'ref_no'); // 单号
			// $tem_currency_code=$arrcurrency[$order['currency_id']]['code'];  // 货币
			// $nickname=WEB_GUEST;
			// if($customer_id > 0) {
			// 	$tem=$customer->get_row($customer_id);
			// 	$nickname=$tem['nickname'];
			// }
			// // 邮件变量 email variables
			// $order_txt='<br />'; // 订单文本化, 用于发邮件, order in email
			// $order_txt.=WEB_ORDER_REF_NO.': '.$ref_no.'<br />';
			// $order_txt.=WEB_TOTAL.': '.$tem_currency_code.$order['total_price'].'<br />';
			// $order_txt.=WEB_ORDERED_TIME.': '.date('Y-m-d').'<br />';
			// $var_email=array(
			// 	'%nickname%'=>$nickname,
			// 	'%date%'=>date('Y-m-d'),
			// 	'%datetime%'=>date('Y-m-d H:i:s'),
			// 	'%url%'=>$baseurl,
			// 	'%company%'=>$config['SITE_COMPANY_'.LANG],
			// 	'%order%'=>$order_txt,
			// 	'%order_ref_no%'=>$ref_no,
			// );
			// // replace vars 替换变量
			// $arr_email = $email_template->get_row(3); // id=3 客户邮件
			// $arr_email_admin = $email_template->get_row(4); // id=4 管理员邮件

			// $subject=$arr_email['subject_'.$lang];
			// $subject_admin=$arr_email_admin['subject_'.$lang];
			// $body=$arr_email['content_'.$lang];
			// $body_admin=$arr_email_admin['content_'.$lang];
			// foreach ($var_email as $key => $value) {
			// 	$subject=str_replace($key, $value, $subject);
			// 	$body=str_replace($key, $value, $body);
			// 	$subject_admin=str_replace($key, $value, $subject_admin);
			// 	$body_admin=str_replace($key, $value, $body_admin);
			// }

			// $body='<!doctype html><html>
			// <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
			// <title>'.$subject.'</title></head>
			// <body>'.$body.'</body></html>';
			// $body_admin='<!doctype html><html>
			// <head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
			// <title>'.$subject_admin.'</title></head>
			// <body>'.$body_admin.'</body></html>';
			// $arr=array(
			// 	'to'=>array($order['email']),
			// 	'subject'=>$subject,
			// 	'body'=>$body,
			// 	'host'=>EMAIL_HOST,
			// 	'account'=>EMAIL_ACCOUNT,
			// 	'password'=>EMAIL_PASSWORD,
			// 	'port'=>EMAIL_PORT,
			// 	'name'=>EMAIL_NAME,
			// 	'ssl'=>EMAIL_SSL,
			// );
			// //pre($arr);
			// if(mail_send($arr)) $k=1; // 发信给顾客 send email to customer

			// $email_admin_txt=DAILY_SALES_ORDER_RECIPIENT_EMAILS;
			// $tem_array=explode(',', $email_admin_txt);
			// $email_admin=array();
			// foreach($tem_array as $val) $email_admin[]=trim($val);
			// $arr_admin=array(
			// 	'to'=>$email_admin,
			// 	'subject'=>$subject_admin,
			// 	'body'=>$body_admin,
			// 	'host'=>EMAIL_HOST,
			// 	'account'=>EMAIL_ACCOUNT,
			// 	'password'=>EMAIL_PASSWORD,
			// 	'port'=>EMAIL_PORT,
			// 	'name'=>EMAIL_NAME,
			// 	'ssl'=>EMAIL_SSL,
			// );
			// //pre($arr);
			// if(mail_send($arr_admin)) $k=1; // 发信给管理员 send email to admin
			// // email end
		}
		$errortodavee= '内部订单号: '.$out_trade_no.'/ 支付宝交易号'.$trade_no.'/ 付款人账号'.$payer.'/ 时间'.date('Y-m-d H:i:s').$errortodavee.'\n';
		//注意：
		//该种交易状态只在一种情况下出现——开通了高级即时到账，买家付款成功后。
        //调试用，写文本函数记录程序运行情况是否正常
        logResult($errortodavee);
	// if($ordertype==4){ // 发送短信-机票订单
	// 	$tem=$dave->echo_info(1,'id','desc','ccode',$code);
	// 	$item=$dave->fetch_array($tem);
	// 	$cname=$item['cname'];
	// 	$dptcity=$ports[$item['dpt']]['cname'];
	// 	$arrcity=$ports[$item['arr']]['cname'];
	// 	$txt='鑫之旅网站'.$cname.'的机票订单('.$code.' '.$dptcity.'-'.$arrcity.')已付款, 请尽快处理. ';
	// 	$arr=array('to'=>$cscell,'txt'=>$txt);
	// 	$msgs->send($arr);
	// }
    }
	//——请根据您的业务逻辑来编写程序（以上代码仅作参考）——
	echo "success";		//请不要修改或删除
	/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
}
else {
    //验证失败
	$errortodavee= '不好意思, 处理失败了: 内部订单号: '.$out_trade_no.'/ 支付宝交易号'.$trade_no.'/ 付款人账号'.$payer.'/ 时间'.date('Y-m-d H:i:s').$errortodavee.'\n';
    echo "fail";

    //调试用，写文本函数记录程序运行情况是否正常
     logResult($errortodavee);
}


?>